home *** CD-ROM | disk | FTP | other *** search
/ Programming in Microsoft Windows with C# / Programacion en Microsoft Windows con C#.iso / Original Code / Clip Drag and Drop / RichTextPaste / RichTextPaste.cs next >
Encoding:
Text File  |  2001-01-15  |  3.9 KB  |  117 lines

  1. //--------------------------------------------
  2. // RichTextPaste.cs ⌐ 2001 by Charles Petzold
  3. //--------------------------------------------
  4. using System;
  5. using System.Drawing;
  6. using System.IO;
  7. using System.Windows.Forms;
  8.  
  9. class RichTextPaste: Form
  10. {
  11.      string   strPastedText = "";
  12.      MenuItem miPastePlain, miPasteRTF, miPasteHTML, miPasteCSV;
  13.  
  14.      public static void Main()
  15.      {
  16.           Application.Run(new RichTextPaste());
  17.      }
  18.      public RichTextPaste()
  19.      {
  20.           Text = "Rich-Text Paste";
  21.           ResizeRedraw = true;
  22.  
  23.           Menu = new MainMenu();
  24.  
  25.                // Edit menu
  26.  
  27.           MenuItem mi = new MenuItem("&Edit");
  28.           mi.Popup += new EventHandler(MenuEditOnPopup);
  29.           Menu.MenuItems.Add(mi);
  30.  
  31.                // Edit Paste Plain Text menu item
  32.  
  33.           miPastePlain = new MenuItem("Paste &Plain Text");
  34.           miPastePlain.Click += new EventHandler(MenuEditPastePlainOnClick);
  35.           Menu.MenuItems[0].MenuItems.Add(miPastePlain);
  36.  
  37.                // Edit Paste RTF menu item
  38.  
  39.           miPasteRTF = new MenuItem("Paste &Rich Text Format");
  40.           miPasteRTF.Click += new EventHandler(MenuEditPasteRTFOnClick);
  41.           Menu.MenuItems[0].MenuItems.Add(miPasteRTF);
  42.  
  43.                // Edit Paste HTML menu item
  44.  
  45.           miPasteHTML = new MenuItem("Paste &HTML");
  46.           miPasteHTML.Click += new EventHandler(MenuEditPasteHTMLOnClick);
  47.           Menu.MenuItems[0].MenuItems.Add(miPasteHTML);
  48.  
  49.                // Edit Paste CSV menu item
  50.  
  51.           miPasteCSV = new MenuItem("Paste &Comma-Separated Values");
  52.           miPasteCSV.Click += new EventHandler(MenuEditPasteCSVOnClick);
  53.           Menu.MenuItems[0].MenuItems.Add(miPasteCSV);
  54.      }
  55.      void MenuEditOnPopup(object obj, EventArgs ea)
  56.      {
  57.           miPastePlain.Enabled = 
  58.                Clipboard.GetDataObject().GetDataPresent(typeof(string));
  59.           miPasteRTF.Enabled =
  60.                Clipboard.GetDataObject().GetDataPresent(DataFormats.Rtf);
  61.           miPasteHTML.Enabled = 
  62.                Clipboard.GetDataObject().GetDataPresent(DataFormats.Html);
  63.           miPasteCSV.Enabled = 
  64.                Clipboard.GetDataObject().GetDataPresent
  65.                                         (DataFormats.CommaSeparatedValue);
  66.      }
  67.      void MenuEditPastePlainOnClick(object obj, EventArgs ea)
  68.      {
  69.           IDataObject data = Clipboard.GetDataObject();
  70.  
  71.           if (data.GetDataPresent(typeof(string)))
  72.           {
  73.                strPastedText = (string) data.GetData(typeof(string));
  74.                Invalidate();
  75.           }
  76.      }
  77.      void MenuEditPasteRTFOnClick(object obj, EventArgs ea)
  78.      {
  79.           IDataObject data = Clipboard.GetDataObject();
  80.  
  81.           if (data.GetDataPresent(DataFormats.Rtf))
  82.           {
  83.                strPastedText = (string) data.GetData(DataFormats.Rtf);
  84.                Invalidate();
  85.           }
  86.      }
  87.      void MenuEditPasteHTMLOnClick(object obj, EventArgs ea)
  88.      {
  89.           IDataObject data = Clipboard.GetDataObject();
  90.  
  91.           if (data.GetDataPresent(DataFormats.Html))
  92.           {
  93.                strPastedText = (string) data.GetData(DataFormats.Html);
  94.                Invalidate();
  95.           }
  96.      }
  97.      void MenuEditPasteCSVOnClick(object obj, EventArgs ea)
  98.      {
  99.           IDataObject data = Clipboard.GetDataObject();
  100.  
  101.           if (data.GetDataPresent(DataFormats.CommaSeparatedValue))
  102.           {
  103.                MemoryStream memstr = (MemoryStream) data.GetData("Csv");
  104.                StreamReader streamreader = new StreamReader(memstr);
  105.                strPastedText = streamreader.ReadToEnd();
  106.                Invalidate();
  107.           }
  108.      }
  109.      protected override void OnPaint(PaintEventArgs pea)
  110.      {
  111.           Graphics grfx = pea.Graphics;
  112.  
  113.           grfx.DrawString(strPastedText, Font, new SolidBrush(ForeColor),
  114.                           ClientRectangle);
  115.      }
  116. }
  117.